﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using itau.im.entidade;

namespace itau.im.gerador
{
    public class FabricaDeGeradores
    {
        private const int INDEXADOR_PRE = 1;
        private const int INDEXADOR_TR = 2;
        private const int INDEXADOR_CDI = 4;
        private const int INDEXADOR_CDIPLUS = 5;
        private const int PRAZO_252 = 1;

        public static IGeradorDeCurva getInstance(Curva curva)
        {
            IGeradorDeCurva gerador = new GeradorDeCurva();

            if (curva != null 
                && curva.CurvaVigente != null 
                && curva.CurvaVigente.CodigoCurvaBasePMT != 0)
            {
                if (curva.CodigoCategoriaMercado.Equals(INDEXADOR_PRE)
                    || curva.CodigoCategoriaMercado.Equals(INDEXADOR_TR))
                {
                    gerador = new GeradorDeCurvaPMT();
                }
                else if ((  curva.CodigoCategoriaMercado.Equals(INDEXADOR_CDI) 
                            && curva.CurvaVigente.CodigoTipoPrazo.Equals(PRAZO_252))
                        || (curva.CodigoCategoriaMercado.Equals(INDEXADOR_CDIPLUS)))
                {
                    gerador = new GeradorDeCurvaPMTCDI();
                }
            }

            return gerador;
        }
    }
}
